#!/bin/bash
# 启动 Flink Agents 集群模式（仅批量处理）
# 用法：
#   ./start-flink-cluster.sh

set -e

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"

echo "🔄 切换到 Flink Agents 集群模式（批量处理）..."
echo "=================================================="

# 切换到项目根目录
cd "$PROJECT_ROOT"

# 停止其他处理器
echo "🛑 停止其他处理器..."
docker-compose -f docker/docker-compose.yml stop event-processor flink-agents-processor 2>/dev/null || true

# 启动 Flink Agents 集群模式
echo "🚀 启动 Flink Agents (集群模式 - 批量处理)..."
docker-compose -f docker/docker-compose.yml --env-file .env --profile flink-cluster up -d

# 等待服务启动
echo "⏳ 等待服务启动（5秒）..."
sleep 5

# 检查服务状态
echo ""
echo "📊 服务状态："
echo "=================================================="
docker ps --filter "name=browse-etl" --format "table {{.Names}}\t{{.Status}}" | grep -E "flink|postgres|localstack"

echo ""
echo "=================================================="
echo "✅ Flink Agents 集群模式已启动（批量处理）"
echo ""
# 记录当前模式
echo "flink-cluster" > /tmp/browse-etl-mode

echo ""
echo "📝 集群模式说明："
echo "   - 批量模式：处理完 Kinesis 所有历史数据后自动退出"
echo "   - 读取策略：TRIM_HORIZON（处理所有历史数据）"
echo "   - 适合：数据回填、定时批处理、测试验证"
echo "   - 如需持续流式处理，请使用 make start 或 make start-flink-local"
echo ""
echo "💡 测试建议："
echo "   - 先运行 'make test' 发送测试数据"
echo "   - 再运行 'make start-flink-cluster' 处理数据"
echo "   - 如需避免重复处理，测试前可清空数据库："
echo "     docker exec browse-etl-postgres psql -U postgres -d behavior_analysis -c 'TRUNCATE TABLE user_behaviors;'"
echo ""
echo "📝 快捷命令："
echo "   部署Lambda: make deploy"
echo "   运行测试: make test"
echo "   查看 Flink UI: make flink-ui (http://localhost:8081)"
echo "   切换模式: make start / make start-flink-local"
echo "   查看日志: make logs-flink-cluster"
echo "=================================================="


